package com.nt.train.annotation;
import com.nt.train.processor.MyConfigrationRegistrar;
import org.springframework.context.annotation.Import;

import java.lang.annotation.*;
/**
 * 1.自定义注解
 *
 * @Target说明了Annotation所修饰的对象范围：Annotation可被用于 packages、types（类、接口、枚举、Annotation类型）、
 * 类型成员（方法、构造方法、成员变量、枚举值）、方法参数和本地变量（如循环变量、catch参数）。
 * 在Annotation类型的声明中使用了target可更加明晰其修饰的目标。
 * @Retention
 * @Retention定义了该Annotation被保留的时间长短：某些Annotation仅出现在源代码中，而被编译器丢弃；
 * 而另一些却被编译在class文件中；编译在class文件中的Annotation可能会被虚拟机忽略，
 * 而另一些在class被装载时将被读取（请注意并不影响class的执行，因为Annotation与class在使用上是被分离的）。
 * 使用这个meta-Annotation可以对 Annotation的“生命周期”限制。
 * @author hlf
 * @version 1.0
 * @date 2022/8/11 15:52
 */
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Import(MyConfigrationRegistrar.class)// 导入加载类MyConfigrationRegistrar
public @interface MyComponentScan {
    String[] value();
}
